package core.cards;

/**
 * Interfejs dostarczający funkcjonalności niezbędnych dla klasy odpowiedzialnej za zawarcie treści danego formularza (zawiera również postać głosu oddanego przy użyciu Frontend'u z poziomu
 * Terminal'a).
 * 
 * @author DoomThrower
 */
public interface IFormBackend {
	/**
	 * Sprawdza, czy karta została poprawnie stworzona (nie ma pustych kart wyborczych itd.)
	 * 
	 * @return true - poprawna
	 */
	public boolean isValid();
	
	/**
	 * Zwraca treść wiadomości walidacyjnej,
	 * 
	 * @return komunikat błędu lub null dla poprawnie stworzonej karty
	 */
	public String getValidationMessage();
	
	/**
	 * Pozyskuje postać głosu z Backend'u.
	 * 
	 * @return postać głosu w formacie XML
	 */
	public String getVoteInXML(); // TODO może lepiej żeby zwracać w formacie Vote?

	/**
	 * Czyści Backend. Zalecane wywoływanie jedynie z poziomu frontend'u!
	 */
	public void clean();
}
